import pandas as pd
import argparse
import os


def excel_to_csv(excel_path, csv_path=None, sheet_index=0):
    """
    将 Excel 文件的指定工作表转换为 CSV 文件

    参数:
        excel_path (str): Excel 文件路径
        csv_path (str): 输出 CSV 文件路径，默认与 Excel 同目录同名称
        sheet_index (int): 工作表索引，默认 0（第一个工作表）
    """
    try:
        # 读取 Excel 文件的指定工作表
        # 支持 .xls 和 .xlsx 格式
        df = pd.read_excel(
            excel_path,
            sheet_name=sheet_index,
            engine='openpyxl' if excel_path.endswith('.xlsx') else 'xlrd'
        )

        # 如果未指定 CSV 路径，默认生成同目录同名称的 .csv 文件
        if not csv_path:
            file_name = os.path.splitext(os.path.basename(excel_path))[0]
            csv_path = os.path.join(os.path.dirname(excel_path), f"{file_name}.csv")

        # 保存为 CSV（使用 utf-8 编码，避免中文乱码）
        df.to_csv(
            csv_path,
            index=False,  # 不保存索引列
            encoding='utf-8-sig'  # 带 BOM 的 utf-8，兼容 Windows 记事本
        )

        print(f"转换成功！CSV 文件已保存至：{csv_path}")

    except FileNotFoundError:
        print(f"错误：未找到文件 {excel_path}")
    except Exception as e:
        print(f"转换失败：{str(e)}")


if __name__ == "__main__":
    # 解析命令行参数
    # parser = argparse.ArgumentParser(description='将 Excel 文件转换为 CSV 文件（默认处理第一个工作表）')
    # parser.add_argument('excel_file', help='Excel 文件路径（支持 .xls 和 .xlsx）')
    # parser.add_argument('-o', '--output', help='输出 CSV 文件路径（可选）')
    # args = parser.parse_args()

    excel_path = f'../crud/GPLIST.xls'
    output_path = f'../crud/GPLIST.csv'

    # 调用转换函数（指定第一个工作表，索引为 0）
    excel_to_csv(excel_path, output_path, sheet_index=0)
